package com.autism.reflect.demo;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

/**
 * 框架类
 *  1.配置文件
 *  2.反射
 * */
public class MyReflect {
    public static void main(String[] args) throws Exception {
        //在不改变代码的前提下  可以创建任意类，执行任意方法

//1.加载配置文件
        Properties properties = new Properties();
        //获取文件路径
        ClassLoader classLoader = MyReflect.class.getClassLoader();
        InputStream resourceAsStream = classLoader.getResourceAsStream("autism.properties");
        properties.load(resourceAsStream);

        //2.获取配置文件的数据
        String className = properties.getProperty("className");
        String methodName = properties.getProperty("methodName");

        //3.加载类进内存
        Class cls = Class.forName(className);

        //创建对象
        Object obj = cls.newInstance();

        //获取方法
        Method method = cls.getMethod(methodName);

        //执行方法
        method.invoke(obj);
    }
}
